#ifndef __ble_remote_H
#define __ble_remote_H

#ifdef __cplusplus
extern "C"
{
#endif

#include "stdint.h"
#include "main.h"

#define BLE_REMOTE_LENGTH 11 // 一个数据包11字节
#define BLE_REMOTE_HEAD 0xfe // 头帧
#define BLE_REMOTE_TAIL 0xfd // 尾帧

#define REMOTE_ERROR 1
#define REMOTE_OK 0
#define ROCKER_DISTANCE_MAX 500 // 最大距离
#define ROCKER_DISTANCE_MIN 0   // 最小距离
#define ROCKER_ANGLE_MAX 360    // 最大角度
#define ROCKER_ANGLE_MIN 0      // 最小角度

#define PI 3.1415926535898f

    typedef struct        // 摇杆结构体
    {
        int16_t distance; // 摇杆距离
        int16_t angle;    // 摇杆角度
        float x_position; // x坐标
        float y_position; // y坐标
    } rocker_t;

    typedef struct          // 遥控器结构体
    {
        rocker_t rocker[2]; // 摇杆数组
        uint8_t Button[4];  // 按键数组
        uint8_t Switch[4];  // 开关数组
    } remote_t;

    uint8_t uart_to_remote(uint8_t *buff);
    uint8_t uart_to_rocker(uint8_t *buff, rocker_t *rocker);
    const remote_t *get_remote_control_point(void);

#ifdef __cplusplus
}
#endif
#endif
